/**
 * @author: Dragon Wu
 * @since: 2025/1/29 18:05
 * @description: 布局菜单
 * 更多使用方法参考：https://www.electronjs.org/zh/docs/latest/api/menu/
 */

import {app, Menu} from "electron";
import MenuItemConstructorOptions = Electron.MenuItemConstructorOptions;
import MenuItem = Electron.MenuItem;

const isMac = process.platform === "darwin";

const template = [
    // { role: "appMenu" }
    ...(isMac
        ? [{
            label: app.name,
            submenu: [
                {role: "about"},
                {type: "separator"},
                {role: "services"},
                {type: "separator"},
                {role: "hide"},
                {role: "hideOthers"},
                {role: "unhide"},
                {type: "separator"},
                {role: "quit"}
            ]
        }]
        : []),
    // { role: "fileMenu" }
    {
        label: "File",
        submenu: [
            isMac ? {role: "close"} : {role: "quit"}
        ]
    },
    // { role: "editMenu" }
    {
        label: "Edit",
        submenu: [
            {role: "undo"},
            {role: "redo"},
            {type: "separator"},
            {role: "cut"},
            {role: "copy"},
            {role: "paste"},
            ...(isMac
                ? [
                    {role: "pasteAndMatchStyle"},
                    {role: "delete"},
                    {role: "selectAll"},
                    {type: "separator"},
                    {
                        label: "Speech",
                        submenu: [
                            {role: "startSpeaking"},
                            {role: "stopSpeaking"}
                        ]
                    }
                ]
                : [
                    {role: "delete"},
                    {type: "separator"},
                    {role: "selectAll"}
                ])
        ]
    },
    // { role: "viewMenu" }
    {
        label: "View",
        submenu: [
            {role: "reload"},
            {role: "forceReload"},
            {role: "toggleDevTools"},
            {type: "separator"},
            {role: "resetZoom"},
            {role: "zoomIn"},
            {role: "zoomOut"},
            {type: "separator"},
            {role: "togglefullscreen"}
        ]
    },
    // { role: "windowMenu" }
    {
        label: "Window",
        submenu: [
            {role: "minimize"},
            {role: "zoom"},
            ...(isMac
                ? [
                    {type: "separator"},
                    {role: "front"},
                    {type: "separator"},
                    {role: "window"}
                ]
                : [
                    {role: "close"}
                ])
        ]
    },
    {
        role: "help",
        submenu: [
            {
                label: "Learn More",
                click: async () => {
                    const {shell} = require("electron")
                    await shell.openExternal("https://electronjs.org")
                }
            }
        ]
    }
]

// 设置应用全局菜单
const setApplicationMenu = () => {
    const menu = Menu.buildFromTemplate(template as Array<(MenuItemConstructorOptions) | (MenuItem)>)
    Menu.setApplicationMenu(menu)
}

export default setApplicationMenu;
